package com.evan.uyclub.Bizhi;

import android.app.Activity;
import android.app.Dialog;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.drawable.BitmapDrawable;
import android.text.format.Time;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.Window;
import android.view.WindowManager;
import android.view.animation.AnimationUtils;
import android.widget.ImageView;
import android.widget.LinearLayout;

import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;

import com.bumptech.glide.Glide;
import com.bumptech.glide.load.engine.DiskCacheStrategy;
import com.evan.uyclub.Other.Utlis;
import com.evan.uyclub.R;
import com.skydoves.elasticviews.ElasticButton;
import com.tapadoo.alerter.Alerter;

import java.util.ArrayList;

public class BizhiAdapter extends RecyclerView.Adapter<BizhiAdapter.ViewHolder> {

    private ArrayList<BizhiData> dataArrayList;
    private Activity activity;


    public BizhiAdapter(Activity activity, ArrayList<BizhiData> dataArrayList) {
        this.activity = activity;
        this.dataArrayList = dataArrayList;

    }

    @NonNull
    @Override
    public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.bizhi_item, parent, false);
        final ViewHolder holder = new ViewHolder(view);
        holder.imageView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                //弹窗的页面
                View view1 = View.inflate(view.getContext(), R.layout.bizhi_dow_dialog, null);
                //这是弹窗样式
                MyDialog mMyDialog = new MyDialog(view.getContext(), 0, 0, view1, R.style.AppDialong);
                mMyDialog.setCancelable(true);
                mMyDialog.show();
                ImageView bizhi_src = mMyDialog.findViewById(R.id.bizhi_src);
                bizhi_src.setImageDrawable(holder.imageView.getDrawable());  //后面的设置到前面去
                ElasticButton dow_bizhi = (ElasticButton) mMyDialog.findViewById(R.id.dow_bizhi);
                dow_bizhi.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View view) {
                        Time t = new Time(); // or Time t=new Time("GMT+8"); 加上Time Zone资料。
                        t.setToNow(); // 取得系统时间。
                        String time = t.year + "年 " + (t.month + 1) + "月 " + t.monthDay + "日 " + t.hour + "h " + t.minute + "m " + t.second;
                        Bitmap bitmap = ((BitmapDrawable) holder.imageView.getDrawable()).getBitmap();  //获取图片
                        String bb = Utlis.fileSaveToPublic(view.getContext(), "BakImg" + t.second, bitmap);
                        mMyDialog.dismiss();
                        Alerter.create((Activity) view.getContext())
                                .setDuration(1200)
                                .setTitle("壁纸已保存至相册！")
                                .setText("保存路径：" + bb)
                                .setBackgroundColorRes(R.color.fbutton_color_emerald)
                                .show();
                    }

                });
                ElasticButton censel = (ElasticButton) mMyDialog.findViewById(R.id.dow_cencel);
                censel.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View view) {
                        mMyDialog.dismiss();
                    }
                });
            }
        });
        return new ViewHolder(view);
    }

//    /**
//     * 保存文件到公共目录
//     * @param context 上下文
//     * @param fileName 文件名
//     * @param bitmap 文件
//     * @return 路径，为空时表示保存失败
//     */
//    public static String fileSaveToPublic(Context context, String fileName, Bitmap bitmap) {
//        String path = null;
//        if (Build.VERSION.SDK_INT < Build.VERSION_CODES.Q) {
//            //Android 10以下版本
//            FileOutputStream fos = null;
//            try {
//                //设置路径 Pictures/
//               // File folder = new File("/UyCode/下载的壁纸/");
//                File folder = Environment.getExternalStoragePublicDirectory("/UyCode/下载的壁纸/");
//                //判断目录是否存在
//                //目录不存在时自动创建
//                if (folder.exists() || folder.mkdir()) {
//                    File file = new File(folder, fileName);
//                    fos = new FileOutputStream(file);
//                    //写入文件
//                    bitmap.compress(Bitmap.CompressFormat.JPEG, 100, fos);
//                    fos.flush();
//                    path = file.getAbsolutePath();
//                }
//            } catch (IOException e) {
//                e.printStackTrace();
//            } finally {
//                if (fos != null) {
//                    try {
//                        fos.close();
//                    } catch (IOException e) {
//                        e.printStackTrace();
//                    }
//                }
//            }
//        } else {
//            //Android 10及以上版本
//            //设置路径 Pictures/
//             String folder = Environment.DIRECTORY_PICTURES;
//            //设置保存参数到ContentValues中
//            ContentValues values = new ContentValues();
//            //设置图片名称
//            values.put(MediaStore.Images.Media.DISPLAY_NAME, fileName);
//            //设置图片格式
//            values.put(MediaStore.Images.Media.MIME_TYPE, "image/png");
//            //设置图片路径
//            values.put(MediaStore.Images.Media.RELATIVE_PATH, folder);
//            //执行insert操作，向系统文件夹中添加文件
//            //EXTERNAL_CONTENT_URI代表外部存储器，该值不变
//            Uri uri = context.getContentResolver().insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values);
//            OutputStream os = null;
//            try {
//                if (uri != null) {
//                    //若生成了uri，则表示该文件添加成功
//                    //使用流将内容写入该uri中即可
//                    os = context.getContentResolver().openOutputStream(uri);
//                    bitmap.compress(Bitmap.CompressFormat.JPEG, 100, os);
//                    os.flush();
//                    path = uri.getPath();
//                }
//            } catch (IOException e) {
//                e.printStackTrace();
//            } finally {
//                if (os != null) {
//                    try {
//                        os.close();
//                    } catch (IOException e) {
//                        e.printStackTrace();
//                    }
//                }
//            }
//        }
//        return path;
//    }

//    /**
//     * 保存图片到沙盒目录
//     * @param context 上下文
//     * @param fileName 文件名
//     * @param bitmap 文件
//     * @return 路径，为空时表示保存失败
//     */
//
//    //保存到App data数据里
//    public static String FileSaveToInside(Context context, String fileName, Bitmap bitmap) {
//        FileOutputStream fos = null;
//        String path = null;
//        try {
//            //设置路径 /Android/data/com.panyko.filesave/Pictures/
//            File folder = context.getExternalFilesDir(Environment.DIRECTORY_PICTURES);
//            //判断目录是否存在
//            //目录不存在时自动创建
//            if (folder.exists() ||folder.mkdir()) {
//                File file = new File(folder, fileName);
//                fos = new FileOutputStream(file);
//                //写入文件
//                bitmap.compress(Bitmap.CompressFormat.JPEG, 100, fos);
//                fos.flush();
//                path = file.getAbsolutePath();
//            }
//        } catch (Exception e) {
//            e.printStackTrace();
//
//        } finally {
//            try {
//                if (fos != null) {
//                    //关闭流
//                    fos.close();
//                }
//            } catch (IOException e) {
//                e.printStackTrace();
//            }
//
//        }
//        //返回路径
//        return path;
//    }

//    public void savePic(Context mContext,Bitmap bm) {
//        Log.d("TAG", "savePic: " + peise);
//        bm = BitmapFactory.decodeResource(mContext, peise.getImage());
//        File appDir = new File(Environment.getExternalStorageDirectory() + File.separator + Environment.DIRECTORY_DCIM + File.separator + "Camera" + File.separator);
//        if (!appDir.exists()) {
//            appDir.mkdirs();
//
//        }
//        String fileName = "Pic_" + System.currentTimeMillis() + ".jpg";
//        File file = new File(appDir, fileName);
//        FileOutputStream fileOutputStream = null;
//        try {
//            fileOutputStream = new FileOutputStream(file);
//            bm.compress(Bitmap.CompressFormat.JPEG, 100, fileOutputStream);
//            fileOutputStream.flush();
//            fileOutputStream.close();
//        } catch (FileNotFoundException e) {
//            e.printStackTrace();
//        } catch (IOException e) {
//            e.printStackTrace();
//        }
//        MediaScannerConnection.scanFile(mContext, new String[]{file.getAbsolutePath()}, new String[]{"img/*"}, null);
//        Toast.makeText(mContext, "保存成功", Toast.LENGTH_SHORT).show();
//    }
//

//    private void saveBitmap(Bitmap bitmap) {
//        String IMAGE_FILE_NAME = "screen_shot.jpg";
//        String imgPath = Environment.getExternalStorageDirectory() + "/UyClub/"
//                + IMAGE_FILE_NAME;  //此处是将图片保存到根目录
//        File f = new File(imgPath);
//        FileOutputStream fOut = null;
//        try {
//            fOut = new FileOutputStream(f);
//        } catch (FileNotFoundException e) {
//            e.printStackTrace();
//        }
//        try {
//            bitmap.compress(Bitmap.CompressFormat.JPEG, 100, fOut);
//        } catch (Exception e) {
//            e.printStackTrace();
//        }
//        try {
//            if (fOut != null)
//                fOut.flush();
//        } catch (IOException e) {
//            e.printStackTrace();
//        }
//
//        try {
//            if (fOut != null)
//                fOut.close();
//        } catch (IOException e) {
//            e.printStackTrace();
//        }
//    }

    @Override
    public void onBindViewHolder(@NonNull ViewHolder holder, int position) {

        holder.cards.startAnimation(AnimationUtils.loadAnimation(activity, R.anim.modal_in));

        BizhiData bizhiData = dataArrayList.get(position);
        Glide.with(activity).load(bizhiData.getImage())
                .diskCacheStrategy(DiskCacheStrategy.ALL)
                .into(holder.imageView);
    }

    @Override
    public int getItemCount() {
        return dataArrayList.size();
    }

    public class ViewHolder extends RecyclerView.ViewHolder {
        private ImageView imageView;
        private LinearLayout cards;

        public ViewHolder(@NonNull View itemview) {
            super(itemview);
            imageView = itemview.findViewById(R.id.bizhi_item_image);
            cards = itemview.findViewById(R.id.bizhi_card);
        }
    }

    //  首页自定义弹窗
    public class MyDialog extends Dialog {
        //    style引用style样式
        public MyDialog(Context context, int width, int height, View layout, int style) {
            super(context, style);
            setContentView(layout);
            Window window = getWindow();
            WindowManager.LayoutParams params = window.getAttributes();
            params.gravity = Gravity.CENTER;
            window.setAttributes(params);
        }
    }
}
